#!/usr/bin/python
# -*- coding: UTF-8 -*-


'''
https://www.cnblogs.com/imageSet/p/7473326.html
利用python自带的zip函数可同时对两个列表进行遍历，代码如下：
'''

list1 = ['a', 'b', 'c', 'd']
list2 = ['apple', 'boy', 'cat', 'dog']

print zip(list1,list2)


for x, y in zip(list1, list2):
    print x, 'is', y

    '''
    原理说明
Python3中的zip函数可以把两个或者两个以上的迭代器封装成生成器，这种zip生成器会从每个迭代器中获取该迭代器的下一个值，然后把这些值组装成元组（tuple）。这样，zip函数就实现了平行地遍历多个迭代器。
注意
如果输入的迭代器长度不同，那么，只要有一个迭代器遍历完，zip就不再产生元组了，zip会提前终止，这可能导致意外的结果，不可不察。如果不能确定zip所封装的列表是否等长，可以改用 itertools 内置模块中的zip_longest 函数，这个函数不在乎它们的长度是否相等。
在Python2中，zip不是生成器，它平行地遍历这些迭代器，组装元组，并把这些元组所构成的列表一次性完整地返回，这可能会占用大量内存并导致程序崩溃，如果在Python2中要遍历数据量大的迭代器，推荐使用 itertools 内置模块中的 izip 函数。
    
    '''
